package resty.tedu.case00;


import org.junit.Test;


/**
 * <pre>
 *  内部类的测试.
 *      普通内部类的实例化:
 *          通过测试可以得知.普通内部类的实例化.
 *          通过method1()可以得知:内部类的实例跟外部类的成员变量是同级的,可以无条件的访问到外部类的私有化变量.
 *          通过method2()可以得知:内部类的实例可以访问到同级的方法.
 *          通过method3()可以得知:内部类与外部类有私有化变量同名时,外部类的同名变量会被隐藏.通过外部类.this.变量名来调用.
 *          通过method4()可能得知:内部类本身也是一个类,可以像普通类一样的实现关系调用,只不过它的实例需要依附于外部实例而创建.
 *          
 *      
 *      
 * </pre>
 *
 * @author : restyhap
 * @date : 2019年03月17日
 */
public class InnerDemoTest {
    /**
     * 当前方法是测试普通内部类与局部变量同名的变量时的调用
     */
    @Test
    public void method4(){
        InnerDemo.Inner inner = new InnerDemo().new Inner();
        inner.method4();
    }
    /**
     * 当前方法是测试普通内部类私有化变量的调用.√
     */
    @Test
    public void method1(){
//        InnerDemo.Inner inner = innerDemo.new Inner();
//        innerDemo.    //通过调用私有化变量并不能实现获取类内部的变量.
        /**两种实例化内部类的方式**/
//        InnerDemo innerDemo = new InnerDemo();
        InnerDemo.Inner inner = new InnerDemo().new Inner();
        inner.method1();
    }
    /**
     * 当前方法是测试普通内部类的方法.√
     */
    @Test
    public void method2(){

        InnerDemo.Inner inner = new InnerDemo().new Inner();
        inner.method2();

    }

    /**
     * 当前方法是测试普通内部类与外部类都有同名的私有化变量时的实现
     */
    @Test
    public void method3(){
        InnerDemo.Inner inner = new InnerDemo().new Inner();
        inner.method3();
    }

    public static void main(String[] args) {
        System.out.println("test");

    }
}
